/********************************************************************************
TITLE:                      	Using Virtual Functions
FILENAME:                   	mediacollection.h
PREPARED FOR:               	CS215 Section CS13-02
PROGRAMMER(S):              	Eric (Fox) Crowell, Timothy Drye
DEVELOPMENT DATE:           	< 12/15/13 >
COMPILER USED:      			Microsoft Visual Studio Professional 2013
- Version 12.0.21005.1 REL
TARGET PLATFORM:         	    Windows 8 x64
================================================================================
REVISION HISTORY

DATE         PROGRAMMER          DESCRIPTION OF CHANGES MADE
------------------------------------------------------------------------------
<12/15/13       Fox                 Class Created.                           >
<12/17/13       Fox                 Completed inserting data members.        >
*******************************************************************************/

#ifndef MEDIA_COLLECTION_H
#define MEDIA_COLLECTION_H

#include <cassert>

#include "time.h"
#include "audiocassette.h"
#include "audiocd.h"
#include "videovhs.h"
#include "videodvd.h"

// Max number of media types allowed in the user's collection
const int MediaCollectionSize = 5;
// Enumeration of media types (starting @ 1).
enum MediaType {
	AUDIO_CASSETTE = 1, // 1
	AUDIO_CD, // 2
	VIDEO_VHS, // 3
	VIDEO_DVD // 4
};

// MediaCollection class
// Ability to contains up five various types of media. 
class MediaCollection
{
public:
	MediaCollection();
	~MediaCollection();
	void AddMedia();
	void DeleteMedia();
	void PlaySelection();
	void FastForward();
	void Rewind();
	void PrintMediaDetails();
	void ListMediaTitles();
	float CalculateMediaCollectionInvestment();
	Time CalculateTotalCollectionPlayingTime();
	string GetCollectionName();
	int GetMCSize();

protected:
	void DisplayMediaTypeMenu();
	MediaType GetMediaTypeSelection();

private:
	string CollectionName;
	Media *Collection[MediaCollectionSize];
	int CurrentMCSize;
};

#endif
